package org.xyq.singleton.lazy;

/**
 * @author xuyanqing
 * @description ⭐⭐4.单例模式-懒汉式-枚举实现【推荐使用】
 * <p>
 * 原理
 * 使用枚举类型实现单例，利用 Java 枚举的特性保证单例的唯一性和线程安全性。
 * 枚举实现不仅天然防止了反射攻击，还能防止反序列化重新创建实例，因为 Java 保证了每个枚举常量在 JVM 中都是唯一的。
 * <p>
 * 优缺点
 * 优点：
 * 实现简单、代码精炼；
 * 天然线程安全；
 * 防止反射和反序列化破坏单例（反射很难创建枚举实例）。
 * 缺点：
 * 如果需要继承其他类或实现某种接口，枚举的局限性可能会带来一些限制；
 * 在某些场景下，枚举的语法风格可能不符合团队的编码规范。
 * @date 2025-02-14 15:59
 * @creed where there is a will,there is a way. yx
 */

public enum Enums {
    INSTANCE;

    public void whateverMethod() {
        //...
        System.out.println("whateverMethod");
    }

    public static void main(String[] args) {
        Enums.INSTANCE.whateverMethod();
    }

    public static Enums getInstance() {
        return INSTANCE;
    }
}
